package com.sudoctor.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;

import com.sudoctor.bean.BusquedaAvanzadaBean;
import com.sudoctor.bean.BusquedaGeolocalizacionBean;
import com.sudoctor.bean.BusquedaSencillaBean;
import com.sudoctor.dao.InmuebleDAO;
import com.sudoctor.entity.HorarioInmueble;
import com.sudoctor.entity.Inmueble;
import com.sudoctor.entity.Telefono;
import com.sudoctor.util.TipoServicio;

public class InmuebleServiceImpl implements InmuebleService{
	
	@Autowired
	InmuebleDAO<Inmueble> inmuebleDAO;

	@Override
	public void guardar(Inmueble objeto) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void actualizar(Inmueble objeto) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void eliminar(String id) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public Inmueble obtenerInmueble(String id) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public List<Inmueble> obtenerListaInmuebles(BusquedaSencillaBean objBusquedaSencillaBean,int pagina, int resultadosPorPagina)
	{
		List<Inmueble> lstInmueble = null;
		
		TipoServicio enumTipoServicio = TipoServicio.getServicio(objBusquedaSencillaBean.getTipoServicio());
		
		//Calcula offset en base a la pagina
		pagina = 10 * (pagina -1);
		
		switch (enumTipoServicio)
		{
		case CONSULTORIOS:
			lstInmueble = inmuebleDAO.obtenerListaConsultorios(objBusquedaSencillaBean,pagina, resultadosPorPagina);
			break;
			
		case LABORATORIOS:
			lstInmueble = inmuebleDAO.obtenerListaFarmacias(objBusquedaSencillaBean,pagina, resultadosPorPagina);
					break;
					
		case FARMACIAS:
			lstInmueble = inmuebleDAO.obtenerListaFarmacias(objBusquedaSencillaBean,pagina, resultadosPorPagina);
			break;
		
		case HOSPITALES_CLINICAS:
			lstInmueble = inmuebleDAO.obtenerListaHospitalesClinicas(objBusquedaSencillaBean,pagina, resultadosPorPagina);
			break;

		default:
			break;
		}
		
		return lstInmueble;
	}

	@Override
	public List<Inmueble> obtenerListaInmuebles(BusquedaAvanzadaBean objBusquedaAvanzadaBean)
	{
		List<Inmueble> lstInmueble = null;
		
		TipoServicio enumTipoServicio = TipoServicio.getServicio(objBusquedaAvanzadaBean.getTipoServicio());
		
		switch (enumTipoServicio)
		{
		case CONSULTORIOS:
			lstInmueble = inmuebleDAO.obtenerListaConsultorios(objBusquedaAvanzadaBean);
			break;
			
		case LABORATORIOS:
			lstInmueble = inmuebleDAO.obtenerListaFarmacias(objBusquedaAvanzadaBean);
					break;
					
		case FARMACIAS:
			lstInmueble = inmuebleDAO.obtenerListaFarmacias(objBusquedaAvanzadaBean);
			break;
		
		case HOSPITALES_CLINICAS:
			lstInmueble = inmuebleDAO.obtenerListaHospitalesClinicas(objBusquedaAvanzadaBean);
			break;

		default:
			break;
		}
		
		return lstInmueble;
	}

	@Override
	public int obtenerTotal(BusquedaSencillaBean objBusquedaSencillaBean)
	{
		int total = inmuebleDAO.obtenerTotalRegistros(objBusquedaSencillaBean);
		return total;
	}

	@Override
	public List<HorarioInmueble> detalleHorario(int inmuebleTipoInmuebleId)
	{
		return inmuebleDAO.detalleHorario(inmuebleTipoInmuebleId);
	}

	@Override
	public Inmueble detalleInmueble(int inmuebleId, int tipoInmuebleId)
	{
		// TODO Auto-generated method stub
		return inmuebleDAO.detalleInmueble(inmuebleId, tipoInmuebleId);
	}

	@Override
	public List<Telefono> detalleTelefonos(int inmuebleTipoInmuebleId)
	{
		return inmuebleDAO.detalleTelefonos(inmuebleTipoInmuebleId);
	}

	@Override
	public List<Inmueble> obtenerListaGeolocalizacion(BusquedaGeolocalizacionBean objBusquedaGeolocalizacion,int pagina, int resultadosPorPagina)
	{
		List<Inmueble> lstInmueble = null;
		
		TipoServicio enumTipoServicio = TipoServicio.getServicio(objBusquedaGeolocalizacion.getUnidadNegocio());
		
		//Calcula offset en base a la pagina
		pagina = 10 * (pagina -1);
		
		//TODO: Pendiente ver si será la misma consulta para cada unidad de negocio.
		
		switch (enumTipoServicio)
		{
		case CONSULTORIOS:
			lstInmueble = inmuebleDAO.obtenerListaConsultoriosGeolocalizacion(objBusquedaGeolocalizacion,pagina, resultadosPorPagina);
			break;
			
		case LABORATORIOS:
			lstInmueble = inmuebleDAO.obtenerListaConsultoriosGeolocalizacion(objBusquedaGeolocalizacion,pagina, resultadosPorPagina);
					break;
					
		case FARMACIAS:
			lstInmueble = inmuebleDAO.obtenerListaConsultoriosGeolocalizacion(objBusquedaGeolocalizacion,pagina, resultadosPorPagina);
			break;
		
		case HOSPITALES_CLINICAS:
			lstInmueble = inmuebleDAO.obtenerListaConsultoriosGeolocalizacion(objBusquedaGeolocalizacion,pagina, resultadosPorPagina);
			break;

		default:
			break;
		}
		
		return lstInmueble;
	}

	
	@Override
	public int obtenerTotal(BusquedaGeolocalizacionBean objBusquedaGeolocalizacionBean)
	{
		int total = inmuebleDAO.obtenerTotalRegistros(objBusquedaGeolocalizacionBean);
		return total;
	}

	

}
